package xin.marcher.module.attribute.service;

import xin.marcher.module.attribute.domain.dto.*;
import xin.marcher.module.attribute.domain.request.*;
import xin.marcher.module.common.core.PageResult;

import java.util.List;

/**
 * 属性管理相关操作API
 */
public interface AttributeService {

    /**
     * 添加属性
     */
    AttributeInfoResultDTO saveAttributeInfo(AttributeInfoRequest request);

    /**
     * 批量给属性添加可选的属性值
     */
    AttributeValueResultDTO saveAttributeValues(List<AttributeValueRequest> list);

    /**
     * 添加属性组接口
     */
    AttributeGroupResultDTO saveAttributeGroup(AttributeGroupRequest request);

    /**
     * 添加属性模板接口
     */
    AttributeTemplateResultDTO saveAttributeTemplate(AttributeTemplateRequest request);

    /**
     * 添加属性模板内容接口
     */
    AttributeTemplateContentResultDTO saveAttributeTemplateContents(List<AttributeTemplateContentRequest> list);

    /**
     * 分页查询属性
     */
    PageResult<AttributeInfoDTO> pageAttributeInfo(QueryAttributeInfoRequest request);

    /**
     * 根据属性id查询属性及可选的属性值
     */
    List<AttributeValueDTO> queryAttributeValueByAttributeId(Long attributeId);

    /**
     * 分页查询属性组
     */
    PageResult<AttributeGroupDTO> pageAttributeGroup(QueryAttributeGroupRequest request);

    /**
     * 分页查询属性模板
     */
    PageResult<AttributeTemplateDTO> pageAttributeTemplate(QueryAttributeTemplateRequest request);

    /**
     * 根据属性模板id查询属性模板的内容
     */
    List<AttributeTemplateContentDTO> queryAttributeTemplateContentByTemplateId(Long templateId);

}
